﻿using Dlls;
using Dominio;
using Persistencia;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Views.Cadastros
{
    /// <summary>
    /// Interaction logic for frmCadastrarCentroCusto.xaml
    /// </summary>
    public partial class frmCadastrarCentroCusto : Window
    {
        private int CodigoAlterarDeletar = 0;
        private CentroCustoDLL centrocustoDll;
        private CentroCusto centrocusto;
       
        public frmCadastrarCentroCusto(int codigo)
        {
            InitializeComponent();
            centrocustoDll = new CentroCustoDLL();
            centrocusto = new CentroCusto();

            if (codigo != 0)
            {
                CodigoAlterarDeletar = codigo;
                
            }
            CentroCusto centro = centrocustoDll.getCentroCusto(CodigoAlterarDeletar);
        }

        private void InsertOrUpdate(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtCodigo.Text != "")
                {
                    centrocusto.Situacao = chkSituacao.IsChecked;
                    centrocusto.NomeCentro = txtNome.Text;

                    centrocustoDll.Update(int.Parse(txtCodigo.Text), centrocusto);
                    MessageBox.Show("Item atualizado com sucesso");
                    reset(0, this);
                }
                else
                {
                    txtCodigo.Text = centrocusto.Codigo.ToString();
                    centrocusto.NomeCentro = txtNome.Text;
                    centrocusto.Situacao = chkSituacao.IsChecked.Value;
                    centrocustoDll.Insert(centrocusto);
                    MessageBox.Show("Item cadastrado com sucesso");
                    reset(0, this);
                }
                centrocusto = new CentroCusto();
            }
            catch (Exception)
            {
                MessageBox.Show("Registro não alterador, favor verificar os campos de preenchimento obrigatório ");
            }
        }

        private void Novo(object sender, RoutedEventArgs e)
        {
            reset(0, this);
        }


        private static void reset(int depth, DependencyObject obj)
        {
            // Percorre todos os filhos do objeto visual.
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
                reset(depth + 1, VisualTreeHelper.GetChild(obj, i));

            // Se for um TextBox, limpa.
            if (obj is TextBox)
                ((TextBox)obj).Text = string.Empty;
        }

        private void Delete(object sender, RoutedEventArgs e)
        {
        }

        private void BuscaCentroCusto(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.Key == Key.Enter)
                {
                    if (txtCodigo.Text == "")
                    {
                        frmConsultaPadrao consultaPadrao = new frmConsultaPadrao("Centro de Custo");
                        consultaPadrao.Owner = this;
                        consultaPadrao.Show();
                    }

                    else if (txtCodigo.Text !="")
                    {
                        int codigo = int.Parse(txtCodigo.Text);
                        CentroCusto centrocusto = centrocustoDll.getCentroCusto(codigo);
                        if (centrocusto != null)
                        {
                            if (centrocusto.Situacao == true)
                            {
                                chkSituacao.IsChecked = true;
                            }
                            else
                            {
                                chkSituacao.IsChecked = false;
                            }
                            txtCodigo.Text = Convert.ToString(centrocusto.Codigo);
                            txtNome.Text = centrocusto.NomeCentro;

                        }
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Não foi possivel executar a rotina , favor fechar o sistema entrar em contato com suporte");
            }
        }

 
    }
}
